﻿/*************************************************************************************

- CLR版本：        4.0.30319.42000
- 类 名 称：       TaskTool
- 机器名称：       YTE
- 命名空间：       LD.Tool.Other
- 文 件 名：       TaskTool
- 创建时间：       2022/6/14 12:03:04
- 作    者：       YTE
- 说   明：
- 修改时间：
- 修 改 人：
  *************************************************************************************/

using HalconDotNet;
using LD.Host;
using LD.Mes;
using LD.MES;
using Newtonsoft.Json.Linq;
using System.Web.UI.WebControls;
using System.Windows.Forms;
using System;
using System.Linq;

namespace LD.Tool
{
    [Tool(FrmParam = "ToolMesSharpFrm", Text = "夏普MES", ToolType = ToolEnum.Mes)]
    public class ToolMesSharp : BaseTool
    {
        public override OpResult Execute(TB_Tool model)
        {
            stopwatch.Start();
            if (!string.IsNullOrEmpty(model.Param))
            {
                JObject obj = JObject.Parse(model.Param);

                string barcode = (string)Cache.Var.Where(p => p.Name == obj["barcode"].ToString()).FirstOrDefault().Val;

                LogoffRequest logoffRequest = new LogoffRequest();
                logoffRequest.glass_id = barcode;

                logoffRequest.line_id = (string)Cache.GetCache(CONST.SHARP_LINECODE);
                logoffRequest.eqp_id = (string)Cache.GetCache(CONST.SHARP_MACHINECODE);
                logoffRequest.operator_id = (string)Cache.GetCache(CONST.SHARP_USERCODE);

                string xml = XMLSerializeHelper.Serialize(logoffRequest);

                Log4.Info($"mes请求:{xml}");

                ActiveMQHelper activeMQHelper = new ActiveMQHelper();
                string xmlResponse = activeMQHelper.Send(xml, logoffRequest.eqp_id, true);
                if (string.IsNullOrEmpty(xmlResponse))
                    Log4.Warr($"mes连接失败");
                else
                    Log4.Info($"MES返回:{xmlResponse}");

                LogoffRespone logoffRespone = XMLSerializeHelper.Deserialize<LogoffRespone>(xmlResponse);

                if (logoffRespone == null)
                    Log4.Warr($"MES返回信息解析失败:{xml}-{xmlResponse}");
                else if (!logoffRespone.rtn_code.Equals("0000000"))
                {
                    Log4.Warr("MES返回NG" + logoffRespone.rtn_code);
                }
            }
            stopwatch.Stop();
            return new OpResult() { IsSuccess = isSuccess, Message = "", ExecuteTime = stopwatch.ElapsedMilliseconds };
        }
    }
}
